# -*- coding:utf-8 -*—
#第一步：调用pandas包
import time

import pandas as pd
import os
from pandas import DataFrame

def splitExcel(excelPath,lockFieldsArr,splitOperate):
    '''
    按字段名去重
    :param excelPath:excel路径
    :param lockFieldsArr:锁定列的excel字段名称，可以为数组
    :param splitOperate:拆分标识符
    :return:
    '''
    #第二步：读入文件
    df = pd.read_excel(io=excelPath)
    # print(df)
    # todo:其中set_index和reset_index()是为了锁定编码列，防止误将其进行拆分，上面例子中编码列不存在逗号，因而这步加不加对结果没有影响。
    # todo:在使用过程中发现，如果set_index中列数过多容易报错，因而可将原表拆为两部分，一部分为不需要拆分的列，另一部分仅为需要拆分的列；然后将后者拆分后再通过某公共列进行merge。
    df2=df.set_index(lockFieldsArr).apply(lambda x: x.str.split(splitOperate).explode()).reset_index()
    # print(df2)
    # df['x'], df['y'] = df['拐点坐标'].str.split(',', 1).str
    # print(df2)
    # 第三步：获取class列表并去重
    dirStr, ext = os.path.splitext(excelPath)
    outpath = dirStr+ '-splitColomns.xlsx'
    df2.to_excel(outpath)

def get_file(path):  # 获取文件路径
    for root, dirs, files in os.walk(path):
        for file in files:
            print(file)     #文件名
            print(os.path.join(root, file))

if __name__ == '__main__':
    # todo：欧洲

    # path=r"F:\data\水电流域\2022.09.26预报数据对比\距平降雨出图\降雨和温度多年统计(1).xlsx"
    # path=r"E:\宁乡统计\所有道路.xlsx"
    path=r"E:\项目相关\13.可再生能源补贴\测试数据\无法成图分割"
    splitOperate=';'
    # filedName="RVCD"
    # filedName="MONTH"
    # filedName="统一社会信用代码"
    lockFieldsArr=['序号',
'省',
'市',
'县',
'项目名称',
'项目类型',
'名称',
'统一社会信用代码',
'建设情况',
'建档立卡编码',
'经度',
'维度',
'上图结果',
'原因'
]
    for root, dirs, files in os.walk(path):
        for file in files:
            print(file)     #文件名
            print(os.path.join(root, file))
            tempPath=os.path.join(root, file)
            # todo 分割excel
            splitExcel(tempPath,lockFieldsArr,splitOperate)
